package wtp;

import java.util.*;
import model.*;

public class SAktiehuis {

	static Map<Integer, Product> productenLijst;
	static Map<String, Klant> klantenLijst;
	static Map<Integer, Bestelling> bestellingLijst;
	static Map<Integer, ArrayList<BestellingProducten>> bestellingProductenLijst;
	static boolean created = false;

	public SAktiehuis() {
		if(!created) {
			created = true;

			productenLijst = new HashMap<Integer, Product>();
			klantenLijst = new HashMap<String, Klant>();
			bestellingLijst = new TreeMap<Integer, Bestelling>();
			bestellingProductenLijst = new HashMap<Integer, ArrayList<BestellingProducten>>();

			klantenLijst.put("Henk", new Klant(1,"Henk"));
			klantenLijst.put("Jan", new Klant(2,"Jan"));
			klantenLijst.put("Kees", new Klant(3,"Kees"));

			productenLijst.put(new Integer(1), new Product(1, "Karnemelk 1L", 0.99, "melk"));
			productenLijst.put(new Integer(2), new Product(2, "Karnemelk 2L", 1.99, "melk"));
			productenLijst.put(new Integer(3), new Product(3, "Melk 1L", .89, "melk"));
			productenLijst.put(new Integer(4), new Product(4, "Goudse Kaas 1lb", 4.49, "kaas"));
			productenLijst.put(new Integer(5), new Product(5, "Franse Kaas 5lb", 2.73, "kaas"));
		}
	}

	public ArrayList<Product> getProductenLijst(String soort) {
		ArrayList<Product> productLijst = new ArrayList<Product>();
		Collection<Product> set = productenLijst.values();
		if(soort.equals("")) {
			productLijst.addAll(set);
		} else {
			for(Product p : set) {
				if(p.getSoort().equals(soort.toLowerCase()))
					productLijst.add(p);
			}
		}
		return productLijst;
	}

	public int nieuweBestelling(String klantNaam) {
		int id = -1;
		Klant k = klantenLijst.get(klantNaam);
		if(k != null) {
			id = bestellingLijst.size()+1;
			bestellingLijst.put(new Integer(id), new Bestelling(id, k));
		}
		return id;
	}

	public boolean bestel(String klantNaam, int bestellingId, int productId, int aantal) {
		boolean succes = false;
		Klant k = klantenLijst.get(klantNaam);
		Bestelling b = bestellingLijst.get(bestellingId);
		Product p = productenLijst.get(productId);
		ArrayList<BestellingProducten> list = bestellingProductenLijst.get(bestellingId);
		if(k != null && b != null && p != null && aantal > 0) {
			if(b.getKlant() == k) {
				if(list == null) {
					list = new ArrayList<BestellingProducten>();
					bestellingProductenLijst.put(bestellingId, list);
				}
				list.add(new BestellingProducten(b, p, aantal));
				succes = true;
			}
		}
		return succes;
	}

	public ArrayList<BestellingProducten> getBestelOverzicht(String klantNaam, int bestellingId) {
		Klant k = klantenLijst.get(klantNaam);
		Bestelling b = bestellingLijst.get(bestellingId);
		ArrayList<BestellingProducten> bestelOverzicht = null; 
		if(k != null && b != null) {
			if(b.getKlant() == k) {
				bestelOverzicht = bestellingProductenLijst.get(bestellingId);
			}
		}
		if(bestelOverzicht == null) bestelOverzicht = new ArrayList<BestellingProducten>();
		return bestelOverzicht;
	}

	public boolean bevestigBestelling(String klantNaam, int bestellingId) {
		Klant k = klantenLijst.get(klantNaam);
		Bestelling b = bestellingLijst.get(bestellingId);
		if(k != null && b != null) {
			if(b.getKlant() == k) {
				b.setDefinitief();
				return true;
			}
		}
		return false;
	}
}